1. Field of the Invention
This disclosure relates to routing and, more particularly, to routing network traffic based on a unique identifier. This is a continuation-in-part of U.S. patent application Ser. No. 12/485,653, filed on Jun. 16, 2009, by Jason D. LaVoie, et al.
2. Background Information
Client/server applications are ubiquitous in today's networked computing environment. Users may access software and services provided by a server from virtually any networked client device. For example, a user of a web-based email service may access his or her email from a personal computer, a public computer, a work computer, a personal digital assistant (“PDA”), a cell phone, or any other device.
The server or servers that provide the email service typically may store and retain the user's data, including the user's email and account settings. If there are many users of the service, multiple servers may be needed to process all the requests from the users. Typically, when a user accesses the service, his or her request may be passed to one of the servers (or one group/cluster of servers) for processing.
The user request may take the form of network traffic. For example, when a user signs into his or her web-based email account, the web-based email account may generate network traffic that travels from the user's device to the server and vice versa. The network traffic may include user data, such as a username, password, an authentication, or a combination of username, password, and authentication, for example. The network traffic may also include data specific to the application, such as email data or other data. As one skilled in the art will recognize, data specific to the application may be typically encapsulated in an application layer of the network traffic, such as OSI layer-7 data.
The network traffic sent by the client device typically may include a network destination address. The client device or client application may receive the network destination address, which may be the address of a reverse proxy server (or network router) provided to the client device, provided to it by a directory name search (“DNS”) service, for example. Typically, the DNS references a reverse proxy, not any of the back end servers directly. The client device may then send the network traffic out onto a network where the network traffic is eventually routed to the network traffic's destination.
Since the user's network traffic may be received by any of the servers, the servers may have to synchronize the user's data. For example, each server may have to retain a copy of the user's data in case the server receives a request from the user to access the data. When the data changes, all the servers may have to synchronize the user's data so that the user does not access out-of-date data. This approach may be problematic because each server will have to maintain its own storage, and because constant synchronization between the servers may cause network contention. Alternatively, each server may have to access a centralized data store that retains a single copy of the data. This approach also may be problematic because it requires a central data store with significant processing power and storage fabric bandwidth. This approach may also cause storage fabric contention. Alternatively, a system may have multiple back-end data stores. This approach is also problematic because it requires synchronization between the back-end data stores so that the user does not access out-of-date data. The constant synchronization with this approach can also cause network contention and result in a user accessing out-of-date data.
As such, in a client-server environment where application logic and application data exist on the same servers, routing users to back-end servers has a problem of routing the user to the correct back-end server or having to replicate the data to every back-end server. The present inventors' previous patent application, from which the present application is a continuation-in-part, addresses this problem using a solution which implements a real-time look-up to route users to a specific back-end server. However, the inventors have also discovered that a similar problem occurs for routing users to the correct back-end server when they are dealing with a delegated resource. A delegated resource is a resource whose owner has delegated a different user to manage the resource in the user's place. The problem is how to properly determine where to route the delegate user when the delegate user may have their own resource(s) along with one or more delegated resource(s).